/**
 * 
 */
package com.snsoft.service.duty;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.snsoft.bean.Base;
import com.snsoft.bean.UserInfo;
import com.snsoft.dao.DutyDao;
import com.snsoft.dao.EnvironmentDao;
import com.snsoft.exception.BaseNotFound;
import com.snsoft.exception.DataIsNull;
import com.snsoft.exception.PromiseRefused;

/**
 * @author 苏国启
 * 
 * @date 2017年11月15日 下午5:54:36
 * 
 * @Description TODO 获取基地普通用户列表业务逻辑
 * 
 */
public class GetUsersService {
	/**
	 * 
	 * @param userId
	 * @return 返回一个List
	 * @throws SQLException
	 */
	@Deprecated
	public List<Integer> getUserCompanyIds(int userId) throws SQLException {
		return new DutyDao().getUserCompanyIds(userId);
	}

	/**
	 * 获取指定基地所有普通用户列表
	 * 
	 * @param companyid
	 * @param admin
	 * @return
	 * @throws SQLException
	 * @throws PromiseRefused
	 * @throws BaseNotFound
	 * @throws DataIsNull
	 */
	public List<Map<String, Object>> getUsers(String companyid, UserInfo admin)
			throws SQLException, PromiseRefused, BaseNotFound, DataIsNull {
		List<Map<String, Object>> result = null;
		Base company = new EnvironmentDao().getBaseInfo(Integer.parseInt(companyid));
		// 判断目标基地是否存在
		if (company == null) {
			throw new BaseNotFound("您要查询的基地不存在！");
		}
		// 判断负责人是否管理目标基地
		if (admin.getRole() == 2) {
			List<Integer> companyids = this.getUserCompanyIds(admin.getUserID());
			if (companyids.isEmpty() || !companyids.contains(Integer.parseInt(companyid))) {
				throw new PromiseRefused("您无权管理该基地！");
			}
		}
		result = new DutyDao().getUsers(companyid);
		if (result.isEmpty()) {
			throw new DataIsNull("该基地目前没有普通用户！");
		}
		return result;
	}
}
